package com.yuntsg.nnsfcp.test.pdf.asposepdf.examples.AsposePdfExamples.Pages;

import com.aspose.pdf.Document;
import com.aspose.pdf.Rectangle;
import com.aspose.pdf.Rotation;

public class ChangePageOrientation {

    public static void main(String[] args) {
        changePageOrientation();
        fittingThePageContentToNewPageOrientation();
    }

    public static void changePageOrientation() {
        Document doc = new Document("Input.pdf");
        int pageCount = doc.getPages().size();
        for (int i = 1; i <= pageCount; i++) {
            Rectangle r = doc.getPages().get_Item(i).getMediaBox();
            double newHeight = r.getWidth();
            double newWidth = r.getHeight();
            double newLLX = r.getLLX();
            // We must to move page upper in order to compensate changing page
            // size
            // (lower edge of the page is 0,0 and information is usually placed
            // from the top of the page.
            // That's why we move lover edge upper on difference between old and
            // new height.
            double newLLY = r.getLLY() + (r.getHeight() - newHeight);
            doc.getPages().get_Item(i).setMediaBox(new Rectangle(newLLX, newLLY, newLLX + newWidth, newLLY + newHeight));
            // Sometimes we also need to set CropBox (if it was set in original
            // file)
            doc.getPages().get_Item(i).setCropBox(new Rectangle(newLLX, newLLY, newLLX + newWidth, newLLY + newHeight));

            // Setting Rotation angle of page
            doc.getPages().get_Item(i).setRotate(Rotation.on90);
        }
        doc.save("Output.pdf");
    }

    public static void fittingThePageContentToNewPageOrientation() {
        Document doc = new Document("Input.pdf");
        Rectangle r = doc.getPages().get_Item(0).getMediaBox();
        // New height the same
        double newHeight = r.getHeight();
        // New width is expanded proportionally to make orientation landscape
        // (we assume that previous orientation is portrait)
        double newWidth = r.getHeight() * r.getHeight() / r.getWidth();
    }
    /*
     * // Info // Load source PDF file Document doc = new Document("input.pdf"); // Get rectangular region of first page of PDF com.aspose.pdf.Rectangle rect = doc.getPages().get_Item(1).getRect(); // Instantiate PdfPageEditor instance PdfPageEditor ppe = new PdfPageEditor(); // Bind source PDF ppe.bindPdf("input.pdf"); // Set zoom coefficient ppe.setZoom((float) (rect.getWidth() / rect.getHeight())); // Update page size ppe.setPageSize(new com.aspose.pdf.PageSize((float) rect.getHeight(), (float) rect.getWidth())); // Save resultant PDF ppe.save("output.pdf"); Info
     */
}
